home *** CD-ROM | disk | FTP | other *** search
- package sun.plugin;
-
- import com.sun.deploy.cache.DeployCacheHandler;
- import com.sun.deploy.config.Config;
- import com.sun.deploy.net.DownloadEngine;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import java.security.PrivilegedExceptionAction;
- import java.util.Enumeration;
- import java.util.jar.JarFile;
- import java.util.zip.ZipEntry;
- import sun.awt.AppContext;
-
- final class PluginURLJarFileCallBack$1 implements PrivilegedExceptionAction {
- // $FF: synthetic field
- final URL val$url;
- // $FF: synthetic field
- final URLConnection val$conn;
- // $FF: synthetic field
- final PluginURLJarFileCallBack this$0;
-
- PluginURLJarFileCallBack$1(PluginURLJarFileCallBack var1, URL var2, URLConnection var3) {
- this.this$0 = var1;
- this.val$url = var2;
- this.val$conn = var3;
- }
-
- public Object run() throws IOException {
- URL var1 = new URL(this.val$url.getProtocol(), this.val$url.getHost(), this.val$url.getPort(), this.val$url.getPath());
- String var2 = (String)AppContext.getAppContext().get(Config.getAppContextKeyPrefix() + var1.toString());
- this.val$conn.setRequestProperty("accept-encoding", "pack200-gzip, gzip");
- if (DeployCacheHandler.isResourceCacheable(this.val$url.toString(), this.val$conn)) {
- BufferedInputStream var3 = null;
-
- try {
- byte[] var4 = new byte[PluginURLJarFileCallBack.access$000()];
- var3 = new BufferedInputStream(this.val$conn.getInputStream());
-
- while(((InputStream)var3).read(var4) != -1) {
- }
- } finally {
- if (var3 != null) {
- ((InputStream)var3).close();
- }
-
- }
-
- JarFile var21 = DownloadEngine.getCachedJarFile(var1, var2);
- if (var21 != null) {
- return var21;
- }
- }
-
- File var20 = DownloadEngine.getJarFileWithoutCache(var1, (String)null, var2, (DownloadEngine.DownloadDelegate)null);
- if (!this.val$url.toString().toUpperCase().endsWith(".JARJAR")) {
- return new JarFile(var20, false);
- } else {
- JarFile var22 = new JarFile(var20, false);
- Enumeration var5 = var22.entries();
- ZipEntry var6 = null;
- int var7 = 0;
-
- while(var5.hasMoreElements()) {
- var6 = (ZipEntry)var5.nextElement();
- if (!var6.getName().toUpperCase().startsWith("META-INF")) {
- if (!var6.toString().toUpperCase().endsWith(".JAR")) {
- throw new IOException("Invalid entry in jarjar file");
- }
-
- ++var7;
- if (var7 > 1) {
- break;
- }
- }
- }
-
- if (var7 > 1) {
- throw new IOException("Multiple JAR files inside JARJAR file");
- } else {
- BufferedInputStream var8 = null;
- OutputStream var9 = null;
-
- try {
- byte[] var10 = new byte[PluginURLJarFileCallBack.access$000()];
- int var11 = 0;
- File var12 = File.createTempFile("jar_cache", (String)null);
- var12.deleteOnExit();
- var8 = new BufferedInputStream(var22.getInputStream(var6));
- var9 = new BufferedOutputStream(new FileOutputStream(var12));
- var11 = (boolean)0;
-
- while((var11 = ((InputStream)var8).read(var10)) != -1) {
- var9.write(var10, 0, var11);
- }
-
- var9.close();
- var9 = null;
- var22 = new JarFile(var12, false);
- } finally {
- if (var8 != null) {
- ((InputStream)var8).close();
- }
-
- if (var9 != null) {
- var9.close();
- }
-
- }
-
- return var22;
- }
- }
- }
- }
-